home *** CD-ROM | disk | FTP | other *** search
/ POINT Software Programming / PPROG1.ISO / pascal / swag / win-os2.swg / 0054_Windows Trap Ctrl-Alt-Del.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1995-02-28  |  1.9 KB  |  97 lines

  1. PROGRAM NoReset;
  2. {(c)1993 by Marc van Leeuwen. Fido 2:285/228 == Pascal-Net 115:115/0  }
  3. { ┌──────────┐ (c) 1993Use it as you want, it works for me, }
  4. { │SW-Program│ LSharP but it might not work for you, so use}
  5. { └──────────┘ Softwareit as is, and modify the errors yourself!}
  6. Uses Crt,Dos
  7. {$IFDEF DPMI}
  8. ,WinAPI
  9. {$ENDIF};
  10.  
  11. {$F+}
  12.  
  13. { $ DEFINE TSR}
  14. {^^^^^^^^^^^^^ Take away the 2 spases to make a tsr program that intercepts}
  15. { the reset. it WON'T work in protected-mode!}
  16.  
  17. {$IFDEF TSR}
  18.  {$IFDEF DPMI}
  19.  {$M 1024}
  20.  {$ELSE}
  21.  {$M 1024,0,0}
  22.  {$ENDIF}
  23. {$ENDIF}
  24.  
  25. var
  26.  Seg0000 : word;
  27.  
  28. PROCEDURE Init_Seg0000;
  29. const
  30.  Seg = $0000;
  31.  Ofs = 0;
  32. begin
  33. {$IFDEF DPMI}
  34.  Seg0000 := AllocSelector(0);
  35.  SetSelectorBase(Seg0000, Seg*Longint(16)+Ofs);
  36.  SetSelectorLimit(Seg0000, $FFFF);
  37. {$ELSE}
  38.  seg0000 := seg;
  39. {$ENDIF}
  40. end;
  41.  
  42. Const
  43.  CtrlCharacter =$4;
  44.  AltCharacter = $8;
  45.  DelCharacter = 83;
  46.  
  47. VAR OudInterupt : Procedure;
  48.  
  49. Procedure ResetIntercept; Interrupt;
  50. BEGIN
  51.  IF (Port[$60] = DelCharacter) AND
  52.  ((Mem[Seg0000:$0417] AND CtrlCharacter) = CtrlCharacter) AND
  53.  ((Mem[Seg0000:$0417] AND AltCharacter) = AltCharacter) THEN
  54. BEGIN
  55.  Inline($FA);
  56.  Port[$20]:=$20;
  57.  Inline($FB);
  58. END
  59.  ELSE
  60. BEGIN
  61.  Inline($9C);
  62.  OudInterupt;
  63. END;
  64. END;
  65.  
  66. Procedure SwitchResetOff;
  67. BEGIN
  68.  GetIntVec($09,@OudInterupt);
  69.  SetIntVec($09,@ResetIntercept);
  70. END;
  71.  
  72. Procedure SwitchResetOn;
  73. BEGIN
  74.  SetIntVec($09,@OudInterupt);
  75. END;
  76.  
  77. BEGIN
  78. {$IFDEF TSR}
  79.  {$IFDEF DPMI}
  80. ( => TSR-programs can`t be made for DPMI-mode programs!!! <= )
  81.  {$ENDIF}
  82.  SwitchResetOff;
  83.  Keep(0);{Start de TSR}
  84. {$ELSE}
  85.  Init_Seg0000;
  86.  SwitchResetOff;
  87.  
  88.  {Vervolgens Uw programma, zoals...}
  89.  Writeln('Ctrl-Alt-Del won''t work now!');
  90.  Repeat Until ReadKey = #27; {Escape stopt het programma}
  91.  Writeln('Ctrl-Alt-Del will be switched on.');
  92.  {En dan weer eindigen met}
  93.  
  94.  SwitchResetOn;
  95. {$ENDIF}
  96. END.
  97.